package vn.edu.thptduongbachmai.model.data;

import com.vng.zing.logger.ZLogger;
import vn.edu.thptduongbachmai.model.pojo.Users;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import vn.edu.thptduongbachmai.model.BaseModel;

/**
 *
 * @author tiennv4
 */
public class UsersModel {

    private static final Logger _Logger = ZLogger.getLogger(UsersModel.class);
    private String QUERY_GET_ITEM = "SELECT * FROM " + Users.TABLE;
    public static final UsersModel Instance = new UsersModel();

//    @Override
    public void process(HttpServletRequest req, HttpServletResponse resp) {
    }

//    public List<Users> getAll() {
//        List<Users> items = new ArrayList<Users>();
//        Connection conn = CliMySQL.getDbConnection();
//        try {
//            String query = QUERY_GET_ITEM;
//            int canTry = 3;
//            do {
//                try {
//
//                    PreparedStatement statement = conn.prepareStatement(query);
//                    ResultSet result = statement.executeQuery();
//                    while (result.next()) {
//                        items.add(new Users(result));
//                    }
//                    result.close();
//                    canTry = 0;
//                } catch (SQLException sqlEx) {
//                    _Logger.info(sqlEx + ": " + query);
//                    --canTry;
//                }
//            } while (canTry > 0);
//
//        } catch (Exception ex) {
//            _Logger.error(ex.getMessage(), ex);
//        } finally {
//            CliMySQL.releaseDbConnection(conn);
//        }
//
//        return items;
//    }
//
//    public Users get(int userId) {
//        Connection conn = CliMySQL.getDbConnection();
//        try {
//            int canTry = 3;
//            do {
//                try {
//
//                    PreparedStatement statement = Users.prepareStatementSelect(conn, userId);
//                    ResultSet result = statement.executeQuery();
//                    while (result.first()) {
//                        return new Users(result);
//                    }
//                    result.close();
//                    canTry = 0;
//                } catch (SQLException sqlEx) {
//                    _Logger.info(sqlEx + ": " + canTry);
//                    --canTry;
//                }
//            } while (canTry > 0);
//
//        } catch (Exception ex) {
//            _Logger.error(ex.getMessage(), ex);
//        } finally {
//            CliMySQL.releaseDbConnection(conn);
//        }
//
//        return null;
//    }
//
//    public int exist(String username) {
//        int ret = -1;
//        Connection conn = CliMySQL.getDbConnection();
//        try {
//            int canTry = 3;
//            do {
//                try {
//
//                    PreparedStatement statement = Users.prepareStatementExist(conn, username);
//                    ResultSet result = statement.executeQuery();
//                    if (result.first()) {
//                        try {
//                            ret = result.getInt("id");
//                        } catch (SQLException ex) {
//                            ret = -1;
//                        }
//                    }
//                    canTry = 0;
//                } catch (SQLException sqlEx) {
//                    _Logger.info(sqlEx + ": " + canTry);
//                    --canTry;
//                }
//            } while (canTry > 0);
//
//        } catch (Exception ex) {
//            _Logger.error(ex.getMessage(), ex);
//        } finally {
//            CliMySQL.releaseDbConnection(conn);
//        }
//        return ret;
//    }
//
//    private boolean executeUpdate(Users user) {
//        boolean ret = false;
//        Connection conn = CliMySQL.getDbConnection();
//        try {
//            int canTry = 3;
//            do {
//                try {
//
//                    PreparedStatement statement = user.prepareStatementInsert(conn);
//                    int result = statement.executeUpdate();
//                    if (result >= 0) {
//                        ret = true;
//                    }
//                    canTry = 0;
//                } catch (SQLException sqlEx) {
//                    _Logger.info(sqlEx + ": " + canTry);
//                    --canTry;
//                }
//            } while (canTry > 0);
//
//        } catch (Exception ex) {
//            _Logger.error(ex.getMessage(), ex);
//        } finally {
//            CliMySQL.releaseDbConnection(conn);
//        }
//        return ret;
//    }
//
//    /**
//     * Function put a user into table user in database
//     *
//     * @param 1: Users user feild match database table, 2: policy put with (0:
//     * add, 1: update, 3: add or update);
//     * @return boolean result insert
//     */
//    public boolean put(Users user, int putPolicy) {
//        boolean result = false;
//        //Get db instance
//        switch (putPolicy) {
//            case 0: {// Insert data
//                result = executeUpdate(user);
//                break;
//            }
//            case 1: {// Update data
//                break;
//            }
//            case 2: {//Insert or update
//
//                break;
//            }
//        }
//        return result;
//    }
}
